package com.scpii.universal.service;

import java.util.List;

import com.scpii.universal.dto.UserInfoDto;
import com.scpii.universal.hibernate.entity.AttributeTab;
import com.scpii.universal.hibernate.entity.CatelogTab;

/**
 * universalWeb
 * @author liuhj
 * 2012-7-5下午05:16:20
 */
public interface CatelogService extends BaseService<CatelogTab, Integer> {
	/**
	 * 获取所有的分类
	 * @param intEnterpId
	 * @param intAppId
	 * @return
	 * @author liuhj
	 * 2012-7-8下午11:50:10
	 */
	public List<CatelogTab> getAllCatelogs(Integer intEnterpId,Integer intAppId);
	
	/**
	 * 获得所有分类tree
	 * @param userInfo
	 * @return
	 * @author liuhj
	 * 2012-7-10下午11:00:51
	 */
	public List<CatelogTab> getAllChildrenTree(UserInfoDto userInfo);
	
	/**
	 * 保存分类
	 * @param intEnterpId
	 * @param intAppId
	 * @return
	 * @author liuhj
	 * 2012-7-8下午11:50:10
	 */
	public Integer save(CatelogTab catelogTab,UserInfoDto user);
	
	/**
	 * 保存分类
	 * @param jsonData
	 * @param user
	 * @param webAppsRealPath
	 * 			C:\Program Files\Tomcat 6.0\webapps\
	 * @param imgBasePath 
	 * 			WORKDIR\ENTERPRISE_企业ID\应用ID
	 * @author liuhj
	 * 2012-7-10下午10:55:24
	 * @return TODO
	 */
	public Integer save(String jsonData, UserInfoDto user, String webAppsRealPath, String imgBasePath);
	
	/**
	 * 根据ID删除分类，同时删除子分类
	 * @param jsonDatas
	 * @author liuhj
	 * 2012-7-8下午11:51:36
	 */
	public void delete(Integer id);
	
	/**
	 * 根据json格式更新分类
	 * @param jsonData
	 * @param webAppsRealPath
	 * 			C:\Program Files\Tomcat 6.0\webapps\
	 * @param imgBasePath 
	 * 			WORKDIR\ENTERPRISE_企业ID\应用ID
	 * @author liuhj
	 * 2012-7-9上午12:19:52
	 */
	public void update(String jsonData, String webAppsRealPath, String imgBasePath);
	
	/**
	 * 根据分类ID获得下属所有分类
	 * @param id
	 * @return
	 * @author liuhj
	 * 2012-7-9下午10:40:30
	 */
	public List<CatelogTab> getAllChildrenTreeById(Integer id);
	/**
	 * 
	 * 获取所有的分类树信息
	 * @return
	 * @author zhangqiaing
	 * 2012-7-10上午11:00:21
	 */
	public List<CatelogTab> getTreeData(Integer appId);
	/**
	 * 根据id的信息，查找parentId等于当前id的数据有多少条记录
	 * @param id
	 * @return
	 * @author zhangqiaing
	 * 2012-7-10上午11:04:15
	 */
	public Integer getCountById(String id);
	/**
	 * 根据分类ID获得下属所有分类
	 * @param id
	 * @return
	 * @author zhangqiaing
	 * 2012-7-10上午11:05:44
	 */
	public List<CatelogTab> getChildrenTreeById(String id,Integer pageNum,Integer pageSize);
	/**
	 * 根据企业和应用查询所有分类
	 * @param user
	 * @return
	 * @author liuhj
	 * 2012-7-18上午11:29:46
	 */
	public List<CatelogTab> getAll(UserInfoDto user);
	/**
	 * 根据ID获得分类信息
	 * @param id
	 * @param properties
	 * 			要查询的属性
	 * @return
	 * @author liuhj
	 * 2012-8-3下午03:09:42
	 */
	public CatelogTab getCatelogInfoById(int id,String[] properties);
	/**
	 * 查询分类本级及上级属性
	 * @param cateId
	 * @return
	 * @author liuhj
	 * 2012-8-3下午04:49:26
	 */
	public List<AttributeTab> getAllAttributesByCateId(int cateId);
	/**
	 * 获取直属下级分类
	 * @param cateId
	 * @return
	 * @author liuhj
	 * 2012-8-1下午06:15:19
	 */
	public List<CatelogTab> getNextLevelChildren(int cateId);
	/**
	 * 删除分类属性
	 * @author Taylor
	 * 2012-9-12 上午10:03:19
	 * @param attrId
	 * void
	 */
	public void deleteAttr(int attrId);
	
	/**
	 * 新增子分类时，父分类有引用，更新页面结构
	 * @author Taylor
	 * 2012-10-15 下午04:16:29
	 * @param catelog
	 * @param subCateId
	 * @param parentHasSubCate
	 * @param user
	 * void
	 */
	public void saveRelationsByCateId(CatelogTab catelog,int subCateId,int parentHasSubCate,UserInfoDto user);
	
	/**
	 * 根据分类查询绑定该分类的视图风格的展示图片规格
	 * @param cateId
	 * @param type TODO
	 * @return
	 */
	public int[] getThumbPixelByBindCate(int cateId, int type);
}
